package com.siwei.mes.mapper.erp;

import com.siwei.mes.common.base.BaseMapperErp;
import com.siwei.mes.entity.erp.Itemorder;
import com.siwei.mes.entity.sync.tc.Waybill;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * ERP-小票(Itemorder)表数据库访问层
 *
 * @author linzi
 * @since 2024-07-29 16:13:09
 */
public interface ItemorderMapper extends BaseMapperErp<Itemorder> {
    /**
     * 获取所有
     *
     * @param entity
     * @return
     */
    List<Itemorder> getList(Itemorder entity);

    /**
     * 获取所有
     *
     * @param entity
     * @return
     */
    List<Waybill> bindList(Itemorder entity);


    /**
     * 根据id获取
     *
     * @param ItId
     * @return
     */
    Itemorder loadByItId(@Param("ItId") Integer ItId);

    /**
     * 获取最大的itid
     *
     * @return
     */
    int selectMaxItid();

    /**
     * 根据任务单号查询所有小票
     *
     * @param frwdh 任务单号
     * @return
     */
    List<Itemorder> selectByFrwdh(@Param("frwdh") Integer frwdh);

    Itemorder selectOneByExperimentId(@Param("experimentId") Long experimentId);

    /**
     * 根据小票号 查询小票数据
     *
     * @param itemorderNo 小票编号
     * @return
     */
    Itemorder selectByItmeorderNo(@Param("itemorderNo") String itemorderNo);

    /**
     * 根据任务单号查询 生产方量大于0的 就是排除掉砂浆对应的小票再取第一条
     *
     * @param frwdh 任务单号
     * @return
     */
    Itemorder selectByFrwdhNotSc(@Param("frwdh") Integer frwdh, @Param("createTime") Date createTime);

    /**
     * 根据任务单号查询 第一车小票
     *
     * @param frwdh 任务单号
     * @return
     */
    Itemorder selectByFrwdhTop(@Param("frwdh") Integer frwdh);

    /**
     * 查询某个时间之后的数据
     *
     * @param time
     * @return
     */
    List<Itemorder> getCompensateInfo(@Param("time") String time);

    /**
     * 根据任务单号查询 生产方量大于0的 第一车的创建时间
     *
     * @param frwdh 任务单号
     * @return
     */
    Date selectByFrwdhCreateTime(@Param("frwdh") Integer frwdh);

    /**
     * 根据任务单号查询 生产方量大于0的 第一车的创建时间
     *
     * @param frwdh 任务单号
     * @return
     */
    Date selectByFrwdhCreateTimeMax(@Param("frwdh") Integer frwdh);

    /**
     * 根据任务单号查询 生产方量大于0的 最后一车的创建时间
     *
     * @param frwdh 任务单号
     * @return
     */
    Date selectByFrwdhCreateTimeMin(@Param("frwdh") Integer frwdh);

    /**
     * 根据itid集合查询
     *
     * @param itidList itid集合
     * @return
     */
    List<Itemorder> selectItidList(@Param("itidList") List<Integer> itidList);
}
